System availability, scalability, and data integrity are fundamental characteristics of enterprise systems. A nonstop performance capability is imposed in financial, communication, and other fields that use enterprise systems for applications such as stock exchange transaction handling, credit and debit card systems, telephone networks, and the like. Highly reliable systems are often implemented in applications with high financial or human costs, in circumstances of massive scaling, and in conditions when outages and data corruption cannot be tolerated.
A redundant processor architecture can be used for an enterprise system in which multiple physical processors operate as a logical processor, each having dedicated memory and running a copy of a similar operating system. Redundant processors enable desired availability and data integrity characteristics. The redundant processor architecture can be used in an arrangement in which the redundant processors are not tightly synchronized and/or may operate based on a different clock. Such systems have potential for a race condition, for example a processor write-input/output controller read race condition. In one specific example, an input/output controller may read a chain of direct memory access (DMA) descriptors from main memory. The input/output controller may issue read commands to each of multiple memory systems and compares the results. If data matches, the result can be used to generate an input/output operation. However, if the processors append to the chain while the input/output controller is reading the chain, the input/output controller can read the appended value from one processor but not from another, appearing to the input/output controller as a memory miscompare and thus an error.